EP3101622 (Ref: FN-384-EP2), the disclosure of which is herein incorporated by reference, discloses a method for correcting a distorted input image stored in memory comprising dividing a local region of the image to be displayed into a grid of rectangular tiles, each tile corresponding to a distorted tile with a non-rectangular boundary within said input image. For each tile of the local region, maximum and minimum memory address locations of successive rows of said input image sufficient to span said boundary of said distorted tile are determined. Successive rows of the distorted input from between said maximum and minimum addresses are read. Distortion of the non-rectangular portion of said distorted input image is corrected to provide a tile of a corrected output image which is stored.
While the distortion correction approach of EP3101622 is useful in many applications, it could also be useful for a distortion correction engine (DCE) (referred to as a Geometrical Distortion Engine (GDE) in EP3101622) in addition or as an alternative to receive image information directly from an image signal processor (ISP) and to correct for example, lens distortion, as such an image is being written to system memory for subsequent processing. One example, of such subsequent processing comprises processing by a neural network such as disclosed in U.S. Patent Application Nos. 62/592,665 & 62/552,592 (Ref: FN-618-USP2) to detect and possibly classify regions of interest within an image.
Providing such a DCE typically requires an input image buffer for storing a plurality of rows (lines) of the input image. Output image pixels can then be produced from the buffered lines to take into account the distortion of the input image.
FIG. 1 shows a grid illustrating lens distortion of an input image. Typically, the memory requirement for an input image buffer is dependent on the image row with maximum curvature due to distortion. In the case of the lens distortion of FIG. 1, maximum distortion occurs along the image rows corresponding with the top-most grid line GL1 and bottom grid line GL7. Thus, one approach would be to provide an input buffer sufficient to store image information for L2-L1 rows. While such an approach could be simple from a control point of view, it requires a relatively large input buffer, and this could add significantly to the cost of implementing such functionality.
It is an object of the present application to provide an improved system and method for correcting such a distorted input image.